package com.note.app.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.note.app.dto.CollectionCreateDTO;
import com.note.app.dto.CollectionDTO;
import com.note.app.dto.CollectionQueryDTO;
import com.note.app.dto.CollectionUpdateDTO;
import com.note.common.vo.ResponseVo;

import java.util.List;

/**
 * 集合服务接口
 */
public interface CollectionService {

    /**
     * 创建集合
     * 
     * @param userId 用户ID
     * @param createDTO 创建参数
     * @return 创建结果
     */
    ResponseVo<CollectionDTO> createCollection(Long userId, CollectionCreateDTO createDTO);
    
    /**
     * 更新集合
     * 
     * @param userId 用户ID
     * @param updateDTO 更新参数
     * @return 更新结果
     */
    ResponseVo<CollectionDTO> updateCollection(Long userId, CollectionUpdateDTO updateDTO);
    
    /**
     * 删除集合
     * 
     * @param userId 用户ID
     * @param collectionId 集合ID
     * @return 删除结果
     */
    ResponseVo<Void> deleteCollection(Long userId, Long collectionId);
    
    /**
     * 获取集合详情
     * 
     * @param userId 用户ID
     * @param collectionId 集合ID
     * @return 集合详情
     */
    ResponseVo<CollectionDTO> getCollection(Long userId, Long collectionId);
    
    /**
     * 分页查询集合列表
     * 
     * @param userId 用户ID
     * @param queryDTO 查询参数
     * @return 分页结果
     */
    ResponseVo<IPage<CollectionDTO>> pageCollections(Long userId, CollectionQueryDTO queryDTO);
    
    /**
     * 获取集合树形结构
     * 
     * @param userId 用户ID
     * @return 树形结构
     */
    ResponseVo<List<CollectionDTO>> getCollectionTree(Long userId);
} 